<?php
/**
 * Created by PhpStorm.
 * User: admin
 * Date: 2019/11/7
 * Time: 9:31
 */

namespace app\adminapiv3\service;


class ServerUpdate extends Base
{
    /**
     * @name 判断是否更新
     * @return bool
     * @author wx
     * @date 2019/11/7 11:22
     */
    function isUpdate()
    {
        if (file_exists('static/ServerUpdate/updating.lock')) {

            return true;
        }else{

            return false;
        }
    }

    /**
     * @name 在线更新
     * @author wx
     * @date 2019/11/7 11:24
     */
    function online()
    {

        //1. 验证是否正在更新
        if ($this->isUpdate()) {
            $this->setError($this->CODE_SUCCESS,'更新程序正在后台运行中,请稍后重试...');
            return false;
        }

        //2. 生成更新文件
        $onlinePath = 'static/ServerUpdate/online/';
        $onlineFile = 'online.lock';

        if (!file_exists($onlinePath)) {
            mkdir($onlinePath,0777,true);
        }

        file_put_contents($onlinePath . $onlineFile, 'online update');
        
        //3. 生成正在更新文件
        file_put_contents('static/ServerUpdate/updating.lock', 'online update');

        return true;
    }


    /**
     * @name 离线更新
     * @param $file
     * @return bool
     * @author wx
     * @date 2019/11/7 11:25
     */
    function offline($file)
    {
        //1. 验证是否正在更新
        if ($this->isUpdate()) {
            $this->setError($this->CODE_FAIL,'系统正在更新，请稍后...');
            return false;
        }

        //2. 验证传入文件
        if(!$file){
            $this->setError($this->CODE_FAIL, '未上传更新包!');
            return false;
        }

        //3. 上传更新包
        $filePath = 'static/ServerUpdate/offline/uploads';
        if (!file_exists($filePath)) {
            mkdir($filePath,0777,true);
        }
        $uploadServer = new Upload();
        $uploadRes = $uploadServer->upload($file, $filePath, 'gz', 512*1024*1024);

        if($uploadRes['code'] != 0){
            $this->setError($this->CODE_FAIL, $uploadRes['msg']);
            return false;
        }

        //4. 获取更新包路径
        $packagePath = $_SERVER['DOCUMENT_ROOT']. '/' . $uploadRes['path'] . $uploadRes['file_name'];

        //5. 生成更新文件
        $offlinePath = './static/ServerUpdate/offline/';
        $offlineFile = 'offline.lock';

        file_put_contents($offlinePath . $offlineFile, $packagePath);
        //6. 生成正在更新文件
        file_put_contents('static/ServerUpdate/updating.lock', $packagePath);

        return true;
    }
}